package com.ease.model.type;

import com.ease.common.enums.EnumUtil;
import com.ease.common.enums.TextualEnum;

/**
 * 
 * @author nathanleewei
 * 
 */
public enum DatabaseDataType implements TextualEnum {

	CHAR("CHAR", DataType.STRING), // CHAR
	DATE("DATE", DataType.DATE), // DATE
	NUMBER("NUMBER", DataType.LONG), // NUMBER
	VARCHAR2("VARCHAR2", DataType.STRING), // VARCHAR2
	BLOB("BLOB", DataType.STRING), //
	CLOB("CLOB", DataType.STRING), //
	FLOAT("FLOAT", DataType.FLOAT), //
	LONG("LONG", DataType.STRING), //
	LONG_RAW("LONG RAW", DataType.STRING), //
	RAW("RAW", DataType.STRING), //
	TIMESTAMP6("TIMESTAMP(6)", DataType.STRING); //

	private String text;

	private DataType dataType;

	private DatabaseDataType(String text, DataType dataType) {
		this.text = text;
		this.dataType = dataType;
	}

	public static DatabaseDataType get(String name) {
		return EnumUtil.get(DatabaseDataType.class, name);
	}

	public static DatabaseDataType getByText(String text) {
		for (Object o : DatabaseDataType.class.getEnumConstants()) {
			DatabaseDataType e = (DatabaseDataType) o;
			if (e.getText().equals(text)) {
				return e;
			}
		}
		return null;
	}

	public String getName() {
		return name();
	}

	/**
	 * @return the text
	 */
	public String getText() {
		return text;
	}

	/**
	 * @return the dataType
	 */
	public DataType getDataType() {
		return dataType;
	}

}
